# 1 绘制直线 cv2.line(img, start, end, color, thickness)
# 参数：
# img：要绘制直线的图像
# Start, End：起始点、终点
# color：直线的颜色
# thickness：线条的宽度，为-1时生成闭合图案，并填充颜色

# 2 绘制圆形 cv2.circle(img, centerpoint, r, color, thickness)
# 参数：
# centerpiont：圆形的坐标
# r：圆的半径
# 其它参数和绘制直线的参数意义相同

# 3 绘制矩形 cv2.rectangle(img, leftupper, rightdown, color, thickness)
# 参数：
# leftupper：矩形左上角坐标
# rightdown：矩形右下角坐标

# 4 添加文字 cv2.putText(img, text, station, font, fontsize, color, thickness, cv.Line_AA)
# 参数：
# station：文本放置位置
# text：要写入的文本数据
# font：字体
# fontsize：字体大小

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 创建一个空白的图像 1920x1080
img = np.zeros([1080, 1920, 3], np.uint8)  # 并且设置数据类型为uint8
# 绘制图形
cv2.line(img, (0, 0), (502, 502), (255, 255, 255), 4)
cv2.rectangle(img, (502, 502), (900, 900), (255, 0, 0), 4)
cv2.circle(img, (800, 700), 100, (0, 255, 0), 4)
# 绘制椭圆
# cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])
# 参数：
# img：图像，椭圆将在此图像上绘制。
# center：椭圆中心的位置（x, y）。
# axes：椭圆的长轴和短轴的长度。
# angle：椭圆的旋转角度，以度为单位。
# startAngle和endAngle：椭圆弧的起始和结束角度。
# color：椭圆的颜色。对于彩色图像，它是一个BGR值的元组，例如（255,0,0）为蓝色。对于灰度图像，它是标量值。
# thickness：线条的厚度。如果它是负数（如cv2.FILLED），则绘制填充的椭圆。
# lineType：线条类型，例如8（连接所有点），4（连接某些点），cv2.LINE_AA（抗锯齿线条）。默认情况下，它是8。
# shift：中心坐标和轴长度的小数位数。默认情况下，这个值是0。

cv2.ellipse(img, (256, 256), (100, 50), 0, 0, 180, 255, -1)
# 写入文字
cv2.putText(
    img, "hello world", (10, 500), cv2.FONT_HERSHEY_COMPLEX_SMALL, 4, (255, 255, 0), 4
)  # 使用cv2内置的字体

plt.imshow(img[:, :, ::-1])  # 逆置图像
plt.title("test")
plt.show()
